package com.me.common.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;

/**
 * 
 *
 * @author ME
 * @date   2020/3/12
 */
public class MyArrayUtil {

    public static void main(String[] args) {
        int[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        List<int[]> list = splitInLength(data, 4);
        list.stream().forEach(o -> System.out.println(ArrayUtils.toString(o)));
    }

    /**
     * 把数组根据指定长度切分为多个数组
     * @param array 需要切分的原数组
     * @param length 需要切分的每个新数组的长度
     * @return
     */
    public static List splitInLength(int[] array, int length) {
        List list = new ArrayList();

        int subCount = array.length / length;
        if (subCount * length != array.length) {
            subCount++;
        }
        for (int i = 0; i < subCount; i++) {
            // if (i == subCount -1) {
            //     list.add(Arrays.copyOfRange(array, i * length, array.length));
            // } else {
            //     list.add(Arrays.copyOfRange(array, i * length, i * length + length));
            // }
            int[] subArray = new int[length];
            if (i == subCount -1) {
                int tmpLeng = array.length - i * length;
                subArray = new int[tmpLeng];
                System.arraycopy(array, i * length, subArray, 0, tmpLeng);
                list.add(subArray);
            } else {
                System.arraycopy(array, i * length, subArray, 0, length);
                list.add(subArray);
            }
        }

        return list;
    }
}
